<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
    function a() {
        console.log("函数a");
    }
    console.log(a.prototype);
    //一：以上验证：每个函数都会有一个prototype属性

    var myString = "abc";
    var myArray = ["tom","nike"];
    console.log(myArray.length);
    console.log(myString.concat("颜值"));
    console.log(myArray.concat(["xuz","house"]));
    console.log([1,2,3,0].sort());
    //二：以上验证：数组和字符串都有concat方法

    var one = {a:1,b:2};
    var two = {a:2,c:5,t:8}
    one = two;
    console.log(one);
    //三：以上验证：数组一旦赋值，整个都重写掉了

    function Person(name) {
        this.name = name;
    }
//    Person.prototype = {a:"test"};
    var friends = new Person();
    console.log(Person.prototype.constructor==Person);
    console.log(friends.__proto__ == Person.prototype);
    console.log(friends.constructor);
//    四：以上验证
    // 1.函数都有一个prototype，prototype里面有一个constructor属性指向函数自身。
//       由构造函数创建的实例有一个__proto__属性，指向构造函数的prototype对象。
//     2.因为constructor是在prototype对象里，如果Person.prototype = {a:"test"}，
//       那么那么prototype属性值整个全重写了，所以constructor就没了

</script>
</body>
</html>